package com.pys.service;

import java.util.List;

import org.hibernate.Session;

import com.pys.dao.impl.KullaniciDAO;
import com.pys.dao.impl.ProjeDAO;
import com.pys.pojo.PysKullanici;
import com.pys.utils.HibernateUtil;

public class KullaniciService {

	public PysKullanici getById(long id) {
		Session session = null;
		PysKullanici pysKullanici = null;
		try {
			session = HibernateUtil.getSessionFactory().openSession();
			KullaniciDAO kullaniciDAO = new KullaniciDAO(session);
			pysKullanici = (PysKullanici) kullaniciDAO.findById(
					PysKullanici.class, id);
		} finally {
			if (session != null) {
				session.close();
			}
		}
		return pysKullanici;
	}

	public void save(PysKullanici pysKullanici) {

		Session session = null;
		try {
			session = HibernateUtil.getSessionFactory().openSession();
			session.beginTransaction();
			KullaniciDAO kullaniciDAO = new KullaniciDAO(session);
			kullaniciDAO.save(pysKullanici);
			session.getTransaction().commit();
		} catch (RuntimeException e) {
			if (session != null) {
				session.getTransaction().rollback();
			}
			throw e;
		} finally {
			if (session != null) {
				session.close();
			}
		}
	}

	public void update(PysKullanici pysKullanici) {
		Session session = null;
		try {
			session = HibernateUtil.getSessionFactory().openSession();
			session.beginTransaction();
			KullaniciDAO kullaniciDAO = new KullaniciDAO(session);
			kullaniciDAO.update(pysKullanici);
			session.getTransaction().commit();
		} catch (RuntimeException e) {
			if (session != null) {
				session.getTransaction().rollback();
			}
			throw e;
		} finally {
			if (session != null) {
				session.close();
			}
		}

	}

	// public void roleEkle(String roleAd) {
	// Session session = HibernateUtil.getSessionFactory().openSession();
	// session.beginTransaction();
	// KullaniciDAO kullaniciDAO = new KullaniciDAOImpl(session);
	// PysKullanici pysKullanici = new PysKullanici();
	// pysKullanici.setAd(roleAd);
	// kullaniciDAO.save(pysKullanici);
	// session.getTransaction().commit();
	// session.close();
	// }

	public List<PysKullanici> getAllList(Boolean deleted) {
		Session session = null;
		List<PysKullanici> list = null;
		try {
			session = HibernateUtil.getSessionFactory().openSession();
			KullaniciDAO kullaniciDAO = new KullaniciDAO(session);
			if (deleted == null)
				list = kullaniciDAO.findAll(PysKullanici.class);
			else
				list = kullaniciDAO.findByProperty(PysKullanici.class,
						"deleted", deleted);
		} finally {
			if (session != null) {
				session.close();
			}
		}
		return list;
	}

	public void delete(PysKullanici pysKullanici) {
		Session session = null;
		try {
			session = HibernateUtil.getSessionFactory().openSession();
			session.beginTransaction();
			KullaniciDAO kullaniciDAO = new KullaniciDAO(session);
			kullaniciDAO.delete(pysKullanici);
			session.getTransaction().commit();
		} catch (RuntimeException e) {
			if (session != null) {
				session.getTransaction().rollback();
			}
			throw e;
		} finally {
			if (session != null) {
				session.close();
			}
		}
	}

	public List<PysKullanici> getByName(String name) {
		Session session = null;
		List<PysKullanici> list = null;
		try {
			session = HibernateUtil.getSessionFactory().openSession();
			KullaniciDAO kullaniciDAO = new KullaniciDAO(session);
			list = kullaniciDAO
					.findByProperty(PysKullanici.class, "name", name);
		} finally {
			if (session != null) {
				session.close();
			}
		}
		return list;
	}

	public PysKullanici checkValidUser(String mail, String sifre) {
		Session session = null;
		PysKullanici pysKullanici = null;
		try {
			session = HibernateUtil.getSessionFactory().openSession();
			KullaniciDAO kullaniciDAO = new KullaniciDAO(session);
			List<PysKullanici> list = kullaniciDAO.findByProperties(
					PysKullanici.class, new String[] { "mail", "sifre" },
					new String[] { mail, sifre });
			if (list != null && list.size() == 1)
				pysKullanici = list.get(0);

		} finally {
			if (session != null) {
				session.close();
			}
		}
		return pysKullanici;
	}

	public List<PysKullanici> getAllAktifList() {
		Session session = null;
		List<PysKullanici> list = null;
		try {
			session = HibernateUtil.getSessionFactory().openSession();
			ProjeDAO projeDAO = new ProjeDAO(session);
			list = projeDAO.findByProperties(PysKullanici.class, new String[] {
					"deleted", "durum" }, new Object[] { false, true });
		} finally {
			if (session != null) {
				session.close();
			}
		}
		return list;
	}

}
